<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 获取随机数[0,max)
    function getRandom(max) {
        return Math.floor(Math.random() * max);
    }

    // 拿出数组中指定索引处的元素
    function getMember(arr,idx) {
        // splice: 操作数组成员的方法，一下例子表示从索引idx处，删除一个元素，并返回被删除元素组成的数组
        let e = arr.splice(idx,1);
        // console.log("e =",e);
        return e[0];
    }

    // 创建存储1-100的初识数组
    function getFirstArr() {
        let arr = [];
        for (let i = 1;i <= 100;i ++) {
            arr.push(i);
        }
        return arr;
    }

    
    // 根据初识数组，获取1-100随机排列的数组
    function getResultArr(arr) {
        let result = [];

        let length = arr.length;
        // 循环arr的长度次，每一次都通过随机数拿出arr中的元素，那么每一次arr的长度都会减少1次
        for (let i = 0;i < length;i ++) {
            let idx = getRandom(arr.length);
            let member = getMember(arr,idx);
            // 将元素追加到结果数组的后面
            result.push(member);
        }
        // 返回结果数组
        return result;
    }

    // 初识数组
    let arr = getFirstArr();
    let result = getResultArr(arr);
    console.log(result);

    



    // 获取[0,1)的随机数
    // let r = Math.random();
    // console.log("r = ",r);
    // console.log("r * 100 = ",r * 100);

    // Math.floor: 对小数向下取整
    // console.log("Math.floor(r * 100) = ",Math.floor(r * 100))

    


</script>

</html>